import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 17655
 * Date: 2025-06-27
 * Time: 22:11
 */
public class test4 {
    // 这种解法相当于是从当前位置往前面找
    public int subarraySum(int[] nums, int k) {
        // key 是sum，value是出现的次数
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        // 边界值处理
        map.put(0,1);
        int sum = 0;
        int count = 0;
        // 也就是说，找到k的倍数,如果是k的倍数就去map中拿k的值，
        for(int num:nums){
            sum += num;
            if(map.containsKey(sum-k)){
                count += map.get(sum-k);
            }
            // 更新sum
            map.put(sum,map.getOrDefault(sum,0)+1);
        }
        return count;
    }
}
